/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package xmlaufgabe4;

import java.util.ArrayList;

/**
 * Klasse zur Darstellung eines eBooks und allen zugehoerigen Informationen.
 * 
 * @author Adrian Cieluch
 */
public class EBook extends DataElement {
    /**
     * Speichert den langen Titel.
     */
    private String longTitle;
    /**
     * Speichert die Sprache.
     */
    private String language;
    /**
     * Speichert den Verlag.
     */
    protected String publisher;
    /**
     * Speicher die Autoren.
     */
    protected ArrayList<String> author;
    /**
     * Speichert die Inhalte.
     */
    protected ArrayList<String> content;
    /**
     * Speichert die Titel.
     */
    protected ArrayList<String> title;

    /**
     * Initialisiert alle Attribute.
     */
    public EBook() {
        super();
        longTitle = "";
        language = "";
        publisher = "";
        author = new ArrayList<String>();
        content = new ArrayList<String>();
        title = new ArrayList<String>();
    }
    
    /**
     * Gibt den langen Titel zurueck.
     * 
     * @return der lange Titel
     */
    public String getLongTitle() {
        return longTitle;
    }

    /**
     * Setzt den langen Titel.
     * 
     * @param longTitle der zu setzende lange Titel
     */
    public void setLongTitle(String longTitle) {
        this.longTitle = longTitle;
    }

    /**
     * Gibt die Sprache zurueck.
     * 
     * @return die Sprache
     */
    public String getLanguage() {
        return language;
    }

    /**
     * Setzt die Sprache.
     * 
     * @param language die zu setzende Sprache
     */
    public void setLanguage(String language) {
        this.language = language;
    }

    /**
     * Gibt den Inhalt an Hand des Index zurueck.
     * 
     * @param index der Index
     * @return der Inhalt
     */
    public String getContentByIndex(int index) {
        return content.get(index);
    }

    /**
     * Fuegt Inhalt hinzu.
     * 
     * @param content der hinzuzufuegende Inhalt
     */
    public void addContent(String content) {
        this.content.add(content);
    }
    
    /**
     * Gibt die Anzahl der Inhalte zurueck.
     * 
     * @return Anzahl der Inhalte
     */
    public int getContentCount() {
        return content.size();
    }

    /**
     * Gibt den Autor an Hand des Index zurueck.
     * 
     * @param index der Index
     * @return der Autor
     */
    public String getAuthorByIndex(int index) {
        return author.get(index);
    }

    /**
     * Fuegt einen Autor hinzu.
     * 
     * @param author der hinzuzufuengende Autor
     */
    public void addAuthor(String author) {
        this.author.add(author);
    }
    
    /**
     * Gibt die Anzahl der Autoren zurueck.
     * 
     * @return Anzahl der Autoren.
     */
    public int getAuthorCount() {
        return author.size();
    }

    /**
     * Gibt den Titel an Hand des Index zurueck.
     * 
     * @param index der Index
     * @return der Titel
     */
    public String getTitleByIndex(int index) {
        return title.get(index);
    }
    
    /**
     * Fuegt einen Titel hinzu.
     * 
     * @param title der hinzuzufuegende Titel
     */
    public void addTitle(String title) {
        this.title.add(title);
    }
    
    /**
     * Gibt die Anzahl der Titel zurueck.
     * 
     * @return Anzahl der Titel 
     */
    public int getTitleCount() {
        return title.size();
    }

    /**
     * Gibt den Verlag zurueck.
     * 
     * @return der Verlag
     */
    public String getPublisher() {
        return publisher;
    }

    /**
     * Setzt den Verlag.
     * 
     * @param publisher der zu setzende Verlag
     */
    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }
    
    /**
     * Ermittelt die Anzahl der leeren Attribute und gibt diese zurueck.
     * 
     * @return Anzahl der leeren Attribute
     */
    @Override
    public int getEmptySlotCount() {
        empty = 0;
        
        this.findEmptySlots();
        
        if(longTitle.isEmpty())
            empty++;
        
        return empty;
    }
}
